package com.qingmeng.applyjob.portal.service;

import com.qingmeng.applyjob.portal.enums.InterpolatingResult;
import com.qingmeng.applyjob.portal.model.dto.AskInterpolatingPublishParam;
import com.qingmeng.applyjob.portal.model.dto.HelpInterParam;
import com.qingmeng.applyjob.portal.model.dto.MessageToInterParam;
import com.qingmeng.applyjob.portal.model.vo.ChoosePusherVo;
import com.qingmeng.applyjob.portal.model.vo.InterpolatingListVo;
import com.qingmeng.applyjob.portal.model.vo.InterpolatingVo;
import com.qingmeng.applyjob.portal.model.vo.MyInterpolatingListVo;

import java.util.List;

public interface InterpolatingService {

    /**
     * 发布求内推
     * @param askInterpolatingPublishParam 前端传来的求内推相关的信息
     * @return
     */
    InterpolatingResult publishAskInterpolating(AskInterpolatingPublishParam askInterpolatingPublishParam);

    /**
     * 获取求内推列表
     * @param pageNum 页码
     * @param pageSize 每页所承载的信息条数
     * @return
     */
    List<InterpolatingListVo> interpolatingList(int pageNum , int pageSize);

    /**
     * 根据求内推id获取求内推详情
     * @param askInterpolatingId 前端传来的求内推id
     * @return 返回求内推详情
     */
    InterpolatingVo getAskInterpolating(Long askInterpolatingId);

    /**
     * 像求内推者留言
     * @param messageToInterParam   前端传来的留言信息
     * @return
     */
    int messageToInter(MessageToInterParam messageToInterParam);

    /**
     * 帮ta推
     * @param helpInterParam 前端传来滴帮内推相关的信息
     * @return
     */
    int helpInter(HelpInterParam helpInterParam);

    /**
     * 获取我的求内推列表(未响应的)
     * @param pageNum 页码
     * @param pageSize 每页的信息条数
     * @return 我的求内推列表
     */
    List<MyInterpolatingListVo> getMyNotRespondInterList(int pageNum , int pageSize);

    /**
     * 修改我的求内推（未响应）
     * @param askInterpolatingPublishParam 前端传来的要修改的求内推相关信息
     * @param interId 前端传来所要修改的求内推id号
     * @return
     */
    InterpolatingResult changeMyInter(AskInterpolatingPublishParam askInterpolatingPublishParam , Long interId);

    /**
     * 获取我的求内推列表(待确定的)
     * @param pageNum
     * @param pageSize
     * @return
     */
    List<MyInterpolatingListVo> getMyToBeDeterminedInter(int pageNum , int pageSize);

    /**
     * 获取求内推详情（包含了可选帮内推人的信息）
     * @param interId 求内推id
     * @return
     */
    ChoosePusherVo choosePusher(Long interId);
}
